package com.wx.learn.sort;

/**
 * <li>从第一个元素开始，该元素可以认为已经被排序；</li>
 * <li>取出下一个元素，在已经排序的元素序列中从后向前扫描；</li>
 * <li>如果该元素（已排序）大于新元素，将该元素移到下一位置；</li>
 * <li>重复步骤3，直到找到已排序的元素小于或者等于新元素的位置；</li>
 * <li>将新元素插入到该位置后；</li>
 * <li>重复步骤2~5。</li>
 * @author wangxin
 */
public class InsertionSort {

    public static void insertionSort(int[] s) {

        for (int i = 1; i < s.length; i++) {
            int temp = s[i];
            int j = i - 1;
            while (j >= 0 && s[j] > temp) {
                s[j + 1] = s[j];
                j--;
            }
            s[j + 1] = temp;
        }
    }

    public static void main(String[] args) {
        int[] s = {4, 3, 2, 5, 1, 6, 7, 8, 9, 10};
        insertionSort(s);
        for (int i = 0; i < s.length; i++) {
            System.out.println(s[i]);
        }
    }
}
